package com.sinotn.ks.node.camera.service;

import java.util.List;

import com.sinotn.Page;
import com.sinotn.ks.node.camera.bean.CameraPhotoBean;
import com.sinotn.ks.node.camera.dao.cond.CameraPhotoCond;
import com.sinotn.ks.node.camera.vo.CameraPhotoVO;

public interface CameraService {

	/**
	 * 查询系统摄像拍照监考记录总数。
	 * @return
	 * @auth <a href="mailto:liyunfeng@sinotn.com">李云峰</a>
	 * @date 2017年06月22日 下午22:09:34
	 */
	int findCameraPhotoCount();

	/**
	 * 分页查询摄像拍照监考记录列表
	 * @param pageIdx
	 * @param pageSize
	 * @param cond
	 * @return
	 * @auth <a href="mailto:liyunfeng@sinotn.com">李云峰</a>
	 * @date 2017年06月22日 下午22:09:34
	 */
	Page findCameraPhotoByPage(int pageIdx, int pageSize, CameraPhotoCond cond);

	/**
	 * 通过ID差砸后设想拍照监考记录
	 * @param id
	 * @return
	 * @auth <a href="mailto:liyunfeng@sinotn.com">李云峰</a>
	 * @date 2017年6月22日 下午10:32:47
	 */
	CameraPhotoVO findCameraPhotoById(String id);

	/**
	 * 新增摄像拍照监考记录记录
	 * @param cameraPhotoVO
	 * @auth <a href="mailto:liyunfeng@sinotn.com">李云峰</a>
	 * @date 2017年06月22日 下午22:09:34
	 */
	void addCameraPhoto(CameraPhotoVO cameraPhotoVO);

	/**
	 * 修改摄像拍照监考记录记录
	 * @param cameraPhotoVO
	 * @auth <a href="mailto:liyunfeng@sinotn.com">李云峰</a>
	 * @date 2016年12月25日 下午1:46:59
	 */
	void modifyCameraPhoto(CameraPhotoVO cameraPhotoVO);

	/**
	 * 删除摄像拍照监考记录
	 * @param id
	 * @auth <a href="mailto:liyunfeng@sinotn.com">李云峰</a>
	 * @date 2017年06月22日 下午22:09:34
	 */
	void deleteCameraPhotoById(String id);

	/**
	 * 查询有警告信息的照片，并发送消息给管理机
	 * @return
	 * @auth <a href="mailto:liyunfeng@sinotn.com">李云峰</a>
	 * @date 2017年6月23日 下午4:50:26
	 */
	void sendWarnCountToComputer();

	/**
	 * 照片比对处理
	 * @auth <a href="mailto:liyunfeng@sinotn.com">李云峰</a>
	 * @date 2017年6月23日 下午7:09:31
	 */
	void photoCompareAutoHandle();

	/**
	 * 获取照片的基本信息
	 * @param id
	 * @return
	 * @auth <a href="mailto:liyunfeng@sinotn.com">李云峰</a>
	 * @date 2017年6月24日 下午4:43:58
	 */
	CameraPhotoBean findCameraPhotoInfo(String id);

	/**
	 * 根据roomId 发送消息给管理机
	 * @param roomId
	 * @auth <a href="mailto:liyunfeng@sinotn.com">李云峰</a>
	 * @date 2017年6月26日 上午10:32:38
	 */
	void sendMsgByRoomId(String roomId);

	/**
	 * 处理监考照片
	 * @param id    监考照片ID
	 * @param invigilatorName   监考员姓名
	 * @param invigilatorPhone  监考员联系方式
	 * @param remark            备注
	 * @auth <a href="mailto:liyunfeng@sinotn.com">李云峰</a>
	 * @date 2017年6月28日 下午6:16:01
	 */
	void fixCameraPhoto(String id,String invigilatorId, String invigilatorName, String invigilatorPhone, String remark, byte fixed);

	/**
	 * 批量删除照片
	 * @param photoList
	 * @auth <a href="mailto:liyunfeng@sinotn.com">李云峰</a>
	 * @date 2017年7月13日 下午6:08:37
	 */
	void delMultiPhotos(List<CameraPhotoVO> photoList);

	/**
	 * 查询正常操作流程的照片
	 * @param cond
	 * @return
	 * @auth <a href="mailto:liyunfeng@sinotn.com">李云峰</a>
	 * @date 2017年7月21日 上午10:00:25
	 */
	List<CameraPhotoBean> findNormalPhotos(String examineeId, String roomId);

	List<CameraPhotoVO> findCameraPhotos(int pageIdx, int pageSize, CameraPhotoCond cond);
	
	int modifyAnalyse(String id, byte state, int faceCount, int similar);

	int getWarnPhotoCount(String roomId);
}
